package collection;

import java.util.ArrayList;
import java.util.List;

/**subList()的演示*/
public class SubListDemo {
    public static void main(String[] args) {
        /*
        List提供了获取子集的操作：
        List subList(int start,int edn)：含头不含尾
         */
        List<Integer> list = new ArrayList<>();
        for(int i = 0;i <8;i++){
            list.add(i*10);
        }
        System.out.println(list);//[0, 10, 20, 30, 40, 50, 60, 70]

        List<Integer> subList =list.subList(3,8);//获取下标3到7的子集
        System.out.println(subList);//[30, 40, 50, 60, 70]

        //将子集每个元素都扩大10倍
        for(int i = 0;i<subList.size();i++){
            subList.set(i, subList.get(i)*10);
        }
        System.out.println("subList:"+subList);//subList:[300, 400, 500, 600, 700]
        //注意：对子集的操作就是对原集合对应的操作
        System.out.println("list:"+list);//list:[0, 10, 20, 300, 400, 500, 600, 700]

        list.set(3,1000);
        System.out.println("list:"+list);//[0, 10, 20, 1000, 400, 500, 600, 700]
        //原集合数据改变后，子集数据跟着改变
        System.out.println("subList:"+subList);//[1000, 400, 500, 600, 700]

        list.remove(0);
        System.out.println("list:"+list);//[10, 20, 1000, 400, 500, 600, 700]
        //原集合长度修改后，子集将不能进行任何操作，操作则发生异常，但是可以重写获取子集
        //System.out.println("subList"+subList);//编译错误，运行时发生不支持修改异常
        List<Integer> sub2 = list.subList(0,5);
        System.out.println("sub2:"+sub2);
    }
}
